/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Proxy;

import ServiceInterface.IFacade;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 *
 * @author Daniel
 * Clase que realiza la comunicación con el módulo EJB que contiene a capa 2 y 3
 */
public class ProxySAFP {

    //referencia a la interfaz en capa 2
    IFacade logicFacade;

    public ProxySAFP() {
        //al crear el proxy, se trata de obtener un bean del modulo EJB
        this.logicFacade = this.lookupSAFPBean();
    }

    /**
     * Metodo que obtiene la referencia al bean de capa 2
     * @return
     */
    public IFacade getServiceInterface() {
        return this.logicFacade;
    }


    /**
     * Metodo que hace el "lookup" con el modulo EJB
     * @return La referencia al bean de capa 2
     */
    private IFacade lookupSAFPBean() {
        try
        {
            //crea el contexto
            Context c = new InitialContext();
            //mediante el cual busca obtener el bean
            return (IFacade) c.lookup("java:global/SAFP/SAFP-ejb/SAFPFacade");
        } catch (NamingException ne) {
            //si no lo encuentra, registra el error en el log de Glassfish
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            //y envia una excepcion
            throw new RuntimeException(ne);
        }
    }
}
